In the early days of computing, a program was simply a monolithic series of instructions that executed, one after the other, often in a linear sequence, with perhaps some internal branching.
However, in modern computing, such simple code paths are the exception rather than the rule. Modern programs have plugins, application programming interfaces (APIs), static libraries, dynamic link libraries (DLLs), shared object libraries, and a host of other types of code that may be reused or shared between different programs. These create more complex code paths.